From: Jasper St. Pierre Date: Wed, 1 Oct 2014 21:28:14 +0000 (-0600) Subject: dateMenu: Don't generate JS garbage every clock tick X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~1013^2^2~2057 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=42066a7c4674cab9ce0da0ed29b463ea9271a636;p=gnome-shell.git dateMenu: Don't generate JS garbage every clock tick Instead of waking up the JS every second to set the clock and update a date label the user will rarely see, simply use property binding to bypass JS string handling, and update the date in the menu when the menu is opened. --- diff --git a/js/ui/dateMenu.js b/js/ui/dateMenu.js index 1a86a6ac2..db8f2a556 100644 --- a/js/ui/dateMenu.js +++ b/js/ui/dateMenu.js @@ -3,6 +3,7 @@ const GLib = imports.gi.GLib; const Gio = imports.gi.Gio; const GnomeDesktop = imports.gi.GnomeDesktop; +const GObject = imports.gi.GObject; const Lang = imports.lang; const Mainloop = imports.mainloop; const Cairo = imports.cairo; @@ -124,14 +125,19 @@ const DateMenuButton = new Lang.Class({ if (isOpen) { let now = new Date(); this._calendar.setDate(now); + + /* Translators: This is the date format to use when the calendar popup is + * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM"). + */ + let dateFormat = _("%A %B %e, %Y"); + this._date.set_label(now.toLocaleFormat(dateFormat)); } })); // Done with hbox for calendar and event list this._clock = new GnomeDesktop.WallClock(); - this._clock.connect('notify::clock', Lang.bind(this, this._updateClockAndDate)); - this._updateClockAndDate(); + this._clock.bind_property('clock', this._clockDisplay, 'text', GObject.BindingFlags.SYNC_CREATE); Main.sessionMode.connect('updated', Lang.bind(this, this._sessionUpdated)); this._sessionUpdated(); @@ -196,16 +202,6 @@ const DateMenuButton = new Lang.Class({ this._dateAndTimeSeparator.actor.visible = Main.sessionMode.allowSettings; }, - _updateClockAndDate: function() { - this._clockDisplay.set_text(this._clock.clock); - /* Translators: This is the date format to use when the calendar popup is - * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM"). - */ - let dateFormat = _("%A %B %e, %Y"); - let displayDate = new Date(); - this._date.set_label(displayDate.toLocaleFormat(dateFormat)); - }, - _getCalendarApp: function() { if (this._calendarApp !== undefined) return this._calendarApp;